》JSON
一般在 create 建造一些你要的物件(重複的物件),是很繁瑣的,今日我們就要帶大家如何用 JSON 資料來紀錄這些物件的屬性位置,方便管理修改。
》Javascript 內容
在放物件的時候,如下。當多量的時候,你就必須再程式碼裡面一直調動 x 或 y 的位置。
let ground = this.add.tileSprite(180, 608, 64 * 6, 64, 'tile') // 寬重複 6 份
this.physics.add.existing(ground, true)
先把資料整理
scene.gameData = {
platforms: [
{ x: 180, y: 608, num: 6, key: 'tile' },
{ x: 300, y: 500, num: 2, key: 'tile' },
{ x: 50, y: 400, num: 3, key: 'tile' }
.....
]
}
把原本寫在 create platforms ,都用資料去產生
scene.setData = function() {
this.platforms = this.add.group()
this.gameData.platforms.forEach(item => {
let w = this.textures.get(item.key).get(0).width // 取得素材的寬
let h = this.textures.get(item.key).get(0).height // 取得素材的高
let obj = this.add.tileSprite(item.x, item.y, item.num * w, h, item.key)
this.physics.add.existing(obj, true)
this.platforms.add(obj)
}
}
在 create 的生命週期,去執行 setData
scene.create = function() {
.....
this.setData()
.....
}
接著我們要把資料拉成 json 擋,去載入它,這樣就不用把資料寫在 scene.gameData 上,而是外部載入檔案。
scene.preload = function() {
.....
this.load.json('data', 'assets/data.json')
}
scene.setData = function() {
.....
this.gameData = this.cache.json.get('data')
}
》結論
今日我們學到了如何用資料來記每個物件的位置狀態等,並用載入外部檔案的方式來引入到遊戲中,就不用把每個物件的資訊寫在程式裡。這樣比較好管理、調整。
今天就先到這裡,我們明天見。